package com.fhp.third;

public class BillingService {


    /**
     * 计算通话费用。
     *
     * @param minutes 通话时间（分钟），向上取整到最接近的整数。
     * @return 通话费用（美元）
     */
    public static double calculateBill(int minutes) {
        if(minutes < 0){
            throw new IllegalArgumentException("Minutes cannot be negative");
        }


        // 向上取整，不足一分钟按一分钟计算
        double chargeableMinutes =  Math.ceil(minutes);

        // 根据计费规则计算费用
        if (chargeableMinutes <= 20) {
            return chargeableMinutes * 0.05;
        } else {
            return 1.00 + (chargeableMinutes - 20) * 0.10;
        }
    }

    // 主方法，用于测试BillingService类（可选）
    public static void main(String[] args) {
        // 测试几个通话时间的费用计算
        System.out.println(calculateBill(0));       // 应该输出 0.0
        System.out.println(calculateBill(1));       // 应该输出 0.05
        System.out.println(calculateBill(20));      // 应该输出 1.0
        System.out.println(calculateBill(21));      // 应该输出 1.1
        System.out.println(calculateBill(30));      // 应该输出 1.5
        System.out.println(calculateBill(60));      // 应该输出 5.0
        // 可以添加更多测试用例来验证功能的正确性
    }
}
